home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 April / EnigmA AMIGA RUN 06 (1996)(G.R. Edizioni)(IT)[!][issue 1996-04][Skylink CD V].iso / progs / editor / write-ed / rexx / foldoberonprocs.wrx < prev    next >
Text File  |  1995-05-01  |  3KB  |  153 lines

  1. /*
  2.  * FoldOberonProgs.wrx © 1994-1995 Tim Teulings
  3.  *
  4.  * Ein Script für den Texteditor WRITE ab V.3.1536 © Tim Teulings
  5.  *
  6.  * Dieses Script faltet den Körper aller Oberon-Prozeduren (erster Level)
  7.  * weg.
  8.  * Dabei muß folgende Formatierung eingehalten werden :
  9.  *  - Das Keywort 'PROCEDURE' muß in der 3. Spalte anfangen.
  10.  *  - Das dazugehörige 'END <Prozedurname>'' muß sich ebenfalls in der
  11.  *    dritten Spalte befinden.
  12.  *
  13.  *  Dies kann allerdings durch ändern der Variablen HEADER und BODYEND
  14.  *  geändert werden.
  15.  *
  16.  *  Formatierungfehler führen möglicherweise dazu, daß Faltungen falsch
  17.  *  gesetzt werden.
  18.  *
  19.  *  $VER 1.1 (Tim Teulings)
  20.  *
  21.  *  1.1 updated to version 3.1536 (Tim Teulings)
  22.  *  1.0 initial version           (Tim Teulings)
  23.  *
  24.  */
  25.  
  26. OPTIONS RESULTS
  27.  
  28. IF ~show('P',"WRITE")
  29. THEN DO
  30.  say 'Dieses Script läuft nur, wenn WRITE bereits gestartet wurde !'
  31.  exit 10
  32. END
  33.  
  34. ADDRESS "WRITE"
  35.  
  36. 'VERSIONCHECK 40000 "FoldOberonProcs.wrx"'
  37. IF RC~=0 THEN DO
  38.   exit 10
  39. END
  40.  
  41. 'GETVAR "_CurrentID"'
  42. ID = RESULT           /* GETVAR gibt den ID des aktuellen Fenster zurück,  */
  43.                       /* der von den weiteren Befehlen benötigt wird.      */
  44.  
  45. IF ID=0 THEN DO
  46.   MESSAGEOK (Kein Fenster aktiviert !)
  47.   EXIT
  48. END
  49.  
  50. OPENPORT ID           /* PrivatePort des aktuellen Fensters öffnen        */
  51. Port = RESULT
  52.  
  53. IF Port="" THEN DO    /* 'OPENPORT' gibt "" zurück, wenn Port nicht       */
  54.                       /* geöffnet werden konnte                           */
  55.  
  56.   LOCKWINDOW ID       /* Fenster wird einfach gelockt                     */
  57. END
  58. ELSE DO
  59.   INTERPRET ADDRESS Port  /* PrivatePort addressieren. Alle Komandos          */
  60.                           /*beziehen sich nun auf das Fenster mit diesem Port */
  61. END
  62.  
  63. 'SILENT'                /* Silent-Mode wegen Geschwindigkeit               */
  64.  
  65. HEADER  = '  PROCEDURE'
  66. BODYEND = '  END'
  67.  
  68. 'GETVAR "_xPos"'        /* Cursorposition holen                            */
  69. OldPos.x = RESULT
  70. 'GETVAR "_yPos"'
  71. OldPos.y = RESULT
  72.  
  73. GOTO @SOT @SOT
  74.  
  75. 'SETVAR "_FindString" &HEADER'
  76. 'FIND @CURSOR @CURSOR @EOT @EOT {@SILENT @CASE}'
  77.  
  78. DO WHILE RC = 0
  79.  
  80.   'GETVAR "_xPos"'
  81.   xPos = RESULT
  82.   'GETVAR "_yPos"'
  83.   From = RESULT
  84.  
  85.   IF xPos=1 THEN DO
  86.  
  87. /*
  88.  * Die folgenden kommentierten Zeeilen matchen bei PROCEDURE .. END
  89.  * die Prozedurnamen, versagen allerdings bei Deklarationen des Types
  90.  * PROCEDURE ( sff : wee) <ProcName>
  91.  */
  92.  
  93. /*  'NEXTWORD NEXTWORD'
  94.     'GETVAR "_CurrentWord"'
  95.     PROCNAME = RESULT
  96.  
  97.     'SETVAR "_FindString" "&BODYEND& &PROCNAME&;"'
  98.  
  99.     'FIND @CURSOR @CURSOR @EOT @EOT {@SILENT @CASE}'
  100.     IF RC=0 THEN DO
  101.       'GETVAR "_xPos"'
  102.       xPos = RESULT
  103.       'GETVAR "_yPos"'
  104.       TO = RESULT
  105.  
  106.       IF xPos=1 THEN DO
  107.         Fold From+1 To
  108.       END
  109.     END */
  110.  
  111. /* Alternativlösung */
  112.  
  113.     'SETVAR "_FindString" &BODYEND'
  114.     'FIND @CURSOR @CURSOR @EOT @EOT {@SILENT @CASE}'
  115.     RES = RC
  116.     'GETVAR "_xPos"'
  117.     xPos = RESULT
  118.  
  119.     DO WHILE  RES = 0 & xPos~=1
  120.       'FIND @CURSOR @CURSOR @EOT @EOT {@SILENT @CASE}'
  121.       RES = RC
  122.       'GETVAR "_xPos"'
  123.       xPos = RESULT
  124.     END;
  125.  
  126.     IF RES = 0 THEN DO
  127.       'GETVAR "_YPos"'
  128.       To = RESULT
  129.  
  130.       Fold From+1 To
  131.     END
  132.  
  133. /* Ende der Alternativlösung */
  134.  
  135.   END
  136.  
  137.   'SETVAR "_FindString" &HEADER'
  138.   FIND 1 From+1 '@EOT @EOT {@SILENT @CASE}'
  139. END
  140.  
  141. GOTO OldPos.x OldPos.y
  142.  
  143. WINDOW 0 0 0 0          /* Silent-Mode wieder ausschalten                  */
  144.  
  145. "MESSAGEOK (REXX-Script\n'FoldOberonProc.wrx'\n\nFertig !)"
  146.  
  147. IF Port="" THEN DO
  148.   LOCKWINDOW 0
  149. END
  150. ELSE DO
  151.   CLOSEPORT ID
  152. END
  153.